import request from '@/utils/request';
import qs from 'qs';
import type { ResponseData } from '../typing';
// 响应接口
export interface GetUserPage_1Res {
    code: number;
    data: {
        size: number;
        total: number;
        records: {
            // 用户ID */
            id: number;
            // 姓名 */
            name: string;
            // 员工编号 */
            code: string;
            // 工作手机号 */
            workPhone: string;
            // 岗位名称 */
            jobName: string;
            // 角色 */
            roles: string;
            // 专业条线 */
            professionalLine: string;
            // 负责区域 */
            projectNames: string;
        }[];
        current: number;
        pages: number;
    };
    msg: string;
}
export interface EmployeeQueryParams {
    projectCode?: string;
    keyword?: string;
    current?: number;
    size?: number;
}
/**
 * 获得用户信息分页
 * @param {string} projectCode 项目code
 * @param {string} keyword 姓名/电话
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function getEmployeePage(params: EmployeeQueryParams): Promise<GetUserPage_1Res> {
    return request.get(`/system/staff/page?${qs.stringify(params)}`);
}
export function getEmployeeList(params) {
    return request.get(`/openapi/user/all?${qs.stringify(params)}`);
}
// 参数接口
export interface UpdateEmployeeParams {
    // 用户ID */
    id: number;
    buildings?: {
        // 项目code */
        projectCode: string;
        // 单元ID列表 */
        buildingIds: Record<string, unknown>[];
    }[];
}
/**
 * 更新用户信息
 * @param {object} params 管理后台 - 用户信息更新 Request VO
 * @param {number} params.id 用户ID
 * @param {array} params.buildings
 * @returns
 */
export function updateEmployee(params: UpdateEmployeeParams): Promise<ResponseData<boolean>> {
    return request.put(`/system/staff/update`, params);
}
// 参数接口
export interface CreateEmployeeParams {
    // 姓名 */
    name: string;
    // 联系电话 */
    workPhone: string;
    // 角色ID列表 */
    roleIds: Record<string, unknown>[];
    // 密码 */
    password: string;
    // 负责项目code列表 */
    projectCodes: Record<string, unknown>[];
    // 单元ID列表 */
    buildingIds: Record<string, unknown>[];
}
/**
 * 新增供方
 * @param {object} params 管理后台 - 用户信息创建 Request VO
 * @param {string} params.name 姓名
 * @param {string} params.workPhone 联系电话
 * @param {array} params.roleIds 角色ID列表
 * @param {string} params.password 密码
 * @param {array} params.projectCodes 负责项目code列表
 * @param {array} params.buildingIds 单元ID列表
 * @returns
 */
export function createEmployee(params: CreateEmployeeParams): Promise<ResponseData<number>> {
    return request.post(`/system/staff/create`, params);
}
// 响应接口
export interface GetEmployeeRes {
    code: number;
    data: {
        createTime: Record<string, unknown>;
        updateTime: Record<string, unknown>;
        creator: number;
        updater: number;
        tenantId: number;
        // 用户ID */
        id: number;
        // 用户名 */
        username: string;
        // 头像地址 */
        avatar: string;
        // 姓名 */
        name: string;
        // mdm用户id */
        mdmUserId: string;
        // 员工编号 */
        code: string;
        // 状态:0->禁用,1->启用 */
        status: number;
        // 工作手机号 */
        workPhone: string;
        // 个人手机号 */
        personalPhone: string;
        // 岗位编号 */
        jobCode: string;
        corpCode: string;
        deptCode: string;
        // 岗位名称 */
        jobName: string;
        // 专业条线 */
        professionalLine: string;
        // 负责区域 */
        projectNames: string;
        // 过期时间 */
        expireTime: Record<string, unknown>;
        // 用户类型:0->超管,1->用户,2->员工 */
        userType: number;
        buildings?: any[];
    };
    msg: string;
}
/**
 * 获得用户信息
 * @param {string} id
 * @returns
 */
export function getEmployee(id: number): Promise<GetEmployeeRes> {
    return request.get(`/system/staff/get/${id}`);
}
// 响应接口
export interface ExportUserExcel_1Res {}
/**
 * 导出用户信息 Excel
 * @param {string} projectCode 项目code
 * @param {string} keyword 姓名/电话
 * @param {string} current 当前第几页(默认1)
 * @param {string} size 每页条数(默认20)
 * @returns
 */
export function exportUserExcel(params: EmployeeQueryParams): Promise<Blob> {
    return request.get(`/system/staff/export-excel?${qs.stringify(params)}`, {
        responseType: 'blob',
    });
}
/**
 * 删除用户信息
 * @param {string} id
 * @returns
 */
export function deleteEmployee(id: number): Promise<ResponseData<boolean>> {
    return request.delete(`/system/staff/delete/${id}`);
}

// 参数接口
export interface UpdateUser2Params {
    // 用户ID */
    id: number;
    // 角色ID列表 */
    roleIds: Record<string, unknown>[];
}

/**
 * 更新用户角色
 * @param {object} params SystemStaffUpdateRoleReqArgs
 * @param {number} params.id 用户ID
 * @param {array} params.roleIds 角色ID列表
 * @returns
 */
export function updateUserRole(params: UpdateUser2Params): Promise<ResponseData<boolean>> {
    return request.put(`/system/staff/roles`, params);
}

/**
 * 获取用户角色
 * @returns
 */
export function roleIds(userId: number): Promise<ResponseData<any>> {
    return request.get(`/system/staff/roles/${userId}`);
}
